#target illustrator
(function () {
    if (app.documents.length === 0) { alert("请先打开一个文档。"); return; }
    var doc = app.activeDocument;

    // 选择输出文件夹
    var outFolder = Folder.selectDialog("选择导出 .ai 的目标文件夹");
    if (!outFolder) return;

    // 基准文件名（批量导出时生成 base-01.ai、base-02.ai…）
    var baseName = (function () {
        var n = doc.name || "Untitled";
        n = n.replace(/\.[^\.]+$/, ""); // 去扩展名
        n = n.replace(/[\\\/\:\*\?\"\<\>\|]/g, "_").replace(/^\s+|\s+$/g, "");
        return n || "Export";
    })();

    function safeName(name, fallback) {
        var s = String(name || "").replace(/[\\\/\:\*\?\"\<\>\|]/g, "_").replace(/^\s+|\s+$/g, "");
        return s || fallback;
    }

    function renameToArtboardNames(outDir, base, abCount) {
        var used = {};
        for (var i = 0; i < abCount; i++) {
            var idx = i + 1;
            var idx2 = ("0" + idx).slice(-2);

            // 兼容可能的两种编号
            var src = new File(outDir.fsName + "/" + base + "-" + idx2 + ".ai");
            if (!src.exists) src = new File(outDir.fsName + "/" + base + "-" + idx + ".ai");
            if (!src.exists) continue; // 没生成该编号文件，跳过

            var abName = safeName(doc.artboards[i].name, "Artboard_" + idx2);
            var target = new File(outDir.fsName + "/" + abName + ".ai");

            // 重名冲突处理：名称 (2)、(3)…
            var k = 2;
            while (target.exists || used[target.fsName]) {
                target = new File(outDir.fsName + "/" + abName + " (" + k + ").ai");
                k++;
            }
            src.rename(target.name);
            used[target.fsName] = true;
        }
    }

    var canGroupUndo = (typeof app.beginUndoGroup === "function" && typeof app.endUndoGroup === "function");
    if (canGroupUndo) app.beginUndoGroup("Export Artboards to AI");

    var oldUI = app.userInteractionLevel;
    app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;

    try {
        // 关键：仅开启“使用画板”，不设置 artboardRange（= 全部画板）
        var aiOpts = new IllustratorSaveOptions();
        aiOpts.saveMultipleArtboards = true;   // “使用画板：全部”
        // 不设置 aiOpts.artboardRange
        aiOpts.embedICCProfile = true;
        // 如需老版本兼容可指定：aiOpts.compatibility = Compatibility.ILLUSTRATOR17;

        // 先保存一个基准文件（有些版本会生成 base-01.ai 等多文件）
        var baseFile = new File(outFolder.fsName + "/" + baseName + ".ai");
        if (baseFile.exists) baseFile.remove(); // 避免被占用
        doc.saveAs(baseFile, aiOpts);

        // 如果生成了拆分文件，把它们重命名成“画板名.ai”
        var abCount = doc.artboards.length;
        var foundSplit = false;
        for (var i = 1; i <= abCount; i++) {
            var i2 = ("0" + i).slice(-2);
            var f1 = new File(outFolder.fsName + "/" + baseName + "-" + i2 + ".ai");
            var f2 = new File(outFolder.fsName + "/" + baseName + "-" + i + ".ai");
            if (f1.exists || f2.exists) { foundSplit = true; break; }
        }
        if (foundSplit) {
            renameToArtboardNames(outFolder, baseName, abCount);
            // 保留/删除 base.ai 由你决定；这里选择保留
        } else {
            // 当前版本可能不会把 AI 按画板拆分，只得到一个多画板的 base.ai
            // 如需强制逐画板单独文件，可改用逐画板 saveAs 或拷贝到临时文档方案
        }
        alert("完成：已尝试按“使用画板=全部”保存。\n若生成了 -01/-02 文件，已按画板名重命名。");

    } catch (e) {
        alert("保存过程中出现错误：\n" + e);
    } finally {
        app.userInteractionLevel = oldUI;
        if (canGroupUndo) app.endUndoGroup();
    }
})();
